package mkis.service.root.utils;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Component;

import mkis.service.root.common.PageInfo;
import mkis.service.root.common.SearchInfo;
import mkis.service.root.constants.Constants;
import mkis.service.root.data.model.Member;

@Component("mkisUtils")
public class MkisUtils {
	
	public static Member getMember(HttpServletRequest request){
		return (Member) HttpUtils.getSessionValue(request,Constants.SESSION_MEMBER);
	}
	
	public Map<String, Object> makeListParam(String page,int startRow,int rowcnt,PageInfo pageInfo,SearchInfo searchInfo){

		Map<String,Object> paramMap=new HashMap<String, Object>();
		
		String input =searchInfo.getInput();
		String typeSelect =searchInfo.getTypeSelect();
		if(input!=null && !"".equals(input)){
			paramMap.put("input",input );
		}
		if(typeSelect!=null && !"".equals(typeSelect)){
			paramMap.put("typeSelect", typeSelect);
		}
		
		paramMap.put("startRow", startRow);
		paramMap.put("rowcnt", rowcnt);
		return paramMap;
		
	}
	
	/**
	 * 페이징 생성
	 */
	public  static String  makePaging(int page,int totalcnt) throws Exception 
	{
	    StringBuffer pageBuf=new StringBuffer("");
	    
		
		if(totalcnt<=0){
			pageBuf.append("<a href=\"#\" class=\"pg_page pg_start\" onclick=\"page("+1+");\">처음</a>");
			pageBuf.append(""+1+"");
		    pageBuf.append("<a href=\"#\" class=\"pg_page pg_end\" onclick=\"page("+1+")\")>맨끝</a>");
		    return pageBuf.toString();
		}
		
		int page_per_record_cnt = 6;  //페이지 당 레코드 수
		int group_per_page_cnt =5; //페이지 당 보여줄 번호 수
		
		
		int record_end_no = page*page_per_record_cnt;				
		int record_start_no = record_end_no-(page_per_record_cnt-1);
		
		if(record_end_no>totalcnt)
		{
			record_end_no = totalcnt;
		}
		
		int total_page = totalcnt / page_per_record_cnt + (totalcnt % page_per_record_cnt>0 ? 1 : 0);
		if(page>total_page)
		{
			page = total_page;
		}

//	 	현재 페이지(정수) / 한페이지 당 보여줄 페지 번호 수(정수) + (그룹 번호는 현제 페이지(정수) % 한페이지 당 보여줄 페지 번호 수(정수)>0 ? 1 : 0)
		int group_no = page/group_per_page_cnt+( page%group_per_page_cnt>0 ? 1:0);
//			현재 그룹번호 = 현재페이지 / 페이지당 보여줄 번호수 (현재 페이지 % 페이지당 보여줄 번호 수 >0 ? 1:0)	
//		ex) 	14		=	13(몫)		=	 (66 / 5)		1	(1(나머지) =66 % 5)			  
		
		int page_eno = group_no*group_per_page_cnt;		
//			현재 그룹 끝 번호 = 현재 그룹번호 * 페이지당 보여줄 번호 
//		ex) 	70		=	14	*	5
		int page_sno = page_eno-(group_per_page_cnt-1);	
//	 		현재 그룹 시작 번호 = 현재 그룹 끝 번호 - (페이지당 보여줄 번호 수 -1)
//		ex) 	66	=	70 - 	4 (5 -1)
		
		if(page_eno>total_page)
		{
//		   현재 그룹 끝 번호가 전체페이지 수 보다 클 경우		
			page_eno=total_page;
//		   현재 그룹 끝 번호와 = 전체페이지 수를 같게
		}
		
		int prev_pageno = page_sno-group_per_page_cnt;  // <<  *[이전]* [21],[22],[23]... [30] [다음]  >>
//			이전 페이지 번호	= 현재 그룹 시작 번호 - 페이지당 보여줄 번호수	
//		ex)		46		=	51 - 5				
		int next_pageno = page_sno+group_per_page_cnt;	// <<  [이전] [21],[22],[23]... [30] *[다음]*  >>
//			다음 페이지 번호 = 현재 그룹 시작 번호 + 페이지당 보여줄 번호수
//		ex)		56		=	51 - 5
		if(prev_pageno<1)
		{
//			이전 페이지 번호가 1보다 작을 경우		
			prev_pageno=1;
//			이전 페이지를 1로
		}
		if(next_pageno>total_page)
		{
//			다음 페이지보다 전체페이지 수보가 클경우		
			next_pageno=total_page/group_per_page_cnt*group_per_page_cnt+1;
//			next_pageno=total_page
//			다음 페이지 = 전체페이지수 / 페이지당 보여줄 번호수 * 페이지당 보여줄 번호수 + 1 
//		ex)			   = 	76 / 5 * 5 + 1	???????? 
		}

	    
	    
	    pageBuf.append("<a href=\"#\" class=\"pg_page pg_start\" onclick=\"page("+1+");\">처음</a>");
	    pageBuf.append("<a href=\"#\" class=\"pg_page pg_prev\" onclick=\"page("+prev_pageno+")\">이전</a>");
	    
	    for(int i =page_sno;i<=page_eno;i++){
			if(page == i){
				pageBuf.append("<span class=\"pg_current\">"+i+"</span>");
				
			}else{ 
				pageBuf.append("<a href=\"#\" class=\"pg_page\" onclick=\"page("+i+")\">"+i+"</a>");
				
			} 
	    } 
	    
	    
	    if(total_page!=page_eno){
	    	pageBuf.append("<a href=\"#\" class=\"pg_page pg_next\" onclick=\"page("+next_pageno+")\">다음</a>");
	    }
	    	
	    pageBuf.append("<a href=\"#\" class=\"pg_page pg_end\" onclick=\"page("+total_page+")\")>맨끝</a>");
	    return  pageBuf.toString();

	}
}